空间计算 Sample详情

最后更新时间:2019年7月5日

移动端支持对几何要素的空间计算功能,如提供计算两点距离、计算两区距离、计算直线角度、计算两线交点等接口。

1 两点距离

计算两个MGSDot点之间的距离。

double pointDistance=[MGSSpaCalculator distanceDot0:dot1 dot1:dot2];

两点距离.jpg

2 直线角度

计算线段的角度。

//获取线的坐标点
MGSDot dot1=[_graphicPolylinA getPointAtIndex:0];
MGSDot dot2=[_graphicPolylinA getPointAtIndex:1];
//计算线段的角度
double angle=[MGSSpaCalculator angle2PIDot0:dot1 dot1:dot2];

直线角度.jpg

3 两线交点

计算两条线的所有交点。

//获取两条线的几何对象,可由图形对象转换而来
MGSGeoVarLine *line1=(MGSGeoVarLine *)[MGSGraphic toGeometryWithGraphic:graphicPolylinA];
MGSGeoVarLine *line2=(MGSGeoVarLine *)[MGSGraphic toGeometryWithGraphic:graphicPolylinB];
//计算两条线的交点(返回值为NSValue的数组)
NSArray *result=[MGSSpaCalculator calLinesIntersLine1:line1 line2:line2];
//获取数组中第一个要素
NSValue *value1=[result objectAtIndex:0];
//解包,得到点
CGPoint point=[value1 CGPointValue];

两线交点.jpg

4 两对象距离

计算两个几何对象之间的距离,以两区之间距离计算为例。

double polygonDistance=[MGSSpaCalculator distanceGeom1:geopolygon1 geom2:geopolygon2 distanceType:Min];

计算对象之间距离时,对象可以为点、线、区、多线、多区,并且计算的距离类型由MGSDistanceType提供,可以为:

它们之间所支持的计算类型如下表所示:

计算对象 线 区(单圈) 多线 多区
min|max min min|max 不支持 不支持
线 min min|max 不支持 不支持 不支持
区(单圈) min|max 不支持 min 不支持 不支持
多线 min min|max 不支持 不支持 不支持
多区 min|max 不支持 min 不支持 不支持

例如两区之间的距离计算效果如下图所示:

两区距离.jpg